This specification relates to static analysis of computer software source code.
Static analysis refers to techniques for analyzing computer software source code without executing the source code as a computer software program.
Source code is typically maintained by developers in a code base of source code using a version control system. Version control systems generally maintain multiple revisions of the source code in the code base, each revision being referred to as a snapshot. Each snapshot includes the source code of files of the code base as the files existed at a particular point in time.
Snapshots stored in a version control system can be represented as a directed, acyclical revision graph. Each node in the revision graph represents a commit of the source code. A commit represents a snapshot as well as other pertinent information about the snapshot, e.g., the author of the snapshot, and data about ancestor commits of the node in the revision graph. An author of a snapshot may be an individual, but generally the author will be an entity, e.g., a named group of people or a unit of a company, or some other identifiable developer of software. A directed edge from a first node to a second node in the revision graph indicates that a commit represented by the first node is an immediately preceding commit to a commit represented by the second node, i.e., that no intervening commits exist in the version control system.